import { lazyReportBatch } from "../report";

// 导出一个默认函数，用于观察长任务
export default function observerLongTask() {
  // 定义一个处理函数，用于处理观察到的长任务
  const entryHandler = (list) => {
    // 遍历观察到的长任务列表
    for (const entry of list.getEntries()) {
      // 如果观察到的任务类型是长任务
      if (entry.entryType === "longtask") {
        // 断开观察器
        observer.disconnect();
        // 将观察到的长任务转换为JSON格式
        const json = entry.toJSON();
        // 构造报告数据
        const reportData = {
          ...json,
          type: "performance",
          subType: entry.entryType,
          page: window.location.href,
        };
        // 调用懒加载报告函数，传入报告数据
        lazyReportBatch(reportData);
      }
    }
  };

  // 统计和计算长任务
  // 创建一个性能观察器，传入处理函数
  const observer = new PerformanceObserver(entryHandler);
  // 观察长任务，并设置缓冲区
  observer.observe({ type: "longtask", buffered: true });
}
